// 退费任务配置文件
// 开发者可以在此文件中修改任务相关的配置参数

export const taskConfig = {
  // 单次创建任务最大明细数量限制
  maxSingleTaskCount: 100,
  
  // 任务创建相关配置
  creation: {
    // 单次创建任务的默认最大明细数量
    defaultMaxCount: 100,
    
    // 单次创建任务的最小明细数量
    minCount: 1,
    
    // 单次创建任务的绝对最大明细数量（硬限制）
    absoluteMaxCount: 100,
    
    // 是否启用明细数量限制检查
    enableCountLimit: true,
    
    // 是否启用用户明细总数限制检查
    enableUserTotalLimit: true
  },
  
  // 任务管理相关配置
  management: {
    // 任务列表刷新间隔（毫秒）
    refreshInterval: 30000,
    
    // 是否自动刷新任务列表
    autoRefresh: false,
    
    // 任务详情加载超时时间（毫秒）
    loadTimeout: 10000
  },
  
  // 用户界面配置
  ui: {
    // 是否显示明细数量限制提示
    showCountLimitTip: true,
    
    // 是否显示用户总明细数限制提示
    showUserTotalLimitTip: true,
    
    // 创建任务按钮文本
    createButtonText: '创建退费任务',
    
    // 创建中按钮文本
    creatingButtonText: '创建中...',
    
    // 是否显示倒计时
    showCountdown: true
  },
  
  // 倒计时配置
  countdown: {
    // 任务起始时间（固定时间，格式：YYYY-MM-DD）
    startDate: '2025-08-17',
    
    // 任务完成期限（天数）
    daysLimit: 60,
    
    // 倒计时显示位置（top: 顶部, bottom: 底部, floating: 浮动）
    position: 'floating',
    
    // 倒计时样式主题（primary, warning, danger）
    theme: 'primary'
  },
  
  // 错误提示信息配置
  messages: {
    // 超出单次创建明细数量限制
    exceedSingleLimit: '单次创建明细数量不能超过 {maxCount} 条',
    
    // 超出用户总明细数量限制
    exceedUserTotalLimit: '您的明细记录总数已达到上限 {maxTotal} 条，无法创建新任务',
    
    // 当前任务未完成
    currentTaskIncomplete: '当前任务中还有 {uncontactedCount} 位患者未联系，请先完成联系工作后再创建新任务',
    
    // 创建成功
    createSuccess: '退费任务创建成功！已从HIS数据库导入数据',
    
    // 创建失败
    createFailed: '创建失败: {error}',
    
    // 获取用户信息失败
    getUserInfoFailed: '获取用户信息失败，请重新登录',
    
    // 权限检查失败
    permissionCheckFailed: '权限检查失败，请稍后重试'
  }
}

// 导出默认配置
export default taskConfig

// 获取配置值的辅助函数
export const getTaskConfig = (path, defaultValue = null) => {
  const keys = path.split('.')
  let value = taskConfig
  
  for (const key of keys) {
    if (value && typeof value === 'object' && key in value) {
      value = value[key]
    } else {
      return defaultValue
    }
  }
  
  return value
}

// 设置配置值的辅助函数
export const setTaskConfig = (path, newValue) => {
  const keys = path.split('.')
  let current = taskConfig
  
  for (let i = 0; i < keys.length - 1; i++) {
    const key = keys[i]
    if (!(key in current) || typeof current[key] !== 'object') {
      current[key] = {}
    }
    current = current[key]
  }
  
  current[keys[keys.length - 1]] = newValue
}

// 验证单次创建明细数量是否有效
export const validateSingleTaskCount = (count) => {
  const config = taskConfig.creation
  
  if (!config.enableCountLimit) {
    return { valid: true }
  }
  
  if (count < config.minCount) {
    return {
      valid: false,
      message: `明细数量不能少于 ${config.minCount} 条`
    }
  }
  
  if (count > config.absoluteMaxCount) {
    return {
      valid: false,
      message: taskConfig.messages.exceedSingleLimit.replace('{maxCount}', config.absoluteMaxCount)
    }
  }
  
  if (count > config.defaultMaxCount) {
    return {
      valid: false,
      message: taskConfig.messages.exceedSingleLimit.replace('{maxCount}', config.defaultMaxCount)
    }
  }
  
  return { valid: true }
}

// 验证用户总明细数是否有效
export const validateUserTotalTaskCount = (currentTotal, userMaxTotal) => {
  const config = taskConfig.creation
  
  if (!config.enableUserTotalLimit) {
    return { valid: true }
  }
  
  if (currentTotal >= userMaxTotal) {
    return {
      valid: false,
      message: taskConfig.messages.exceedUserTotalLimit.replace('{maxTotal}', userMaxTotal)
    }
  }
  
  return { valid: true }
}